using Gateway.IApplication.Menu.Input;
using Gateway.Infrastructure.AutoDI;

namespace Gateway.IApplication.Menu;

/// <summary>
/// 菜单 权限服务
/// </summary>
public interface IMenuApp : IDependency
{
    /// <summary>
    /// 创建
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<string> Add(CreateMenuInput input);

    /// <summary>
    /// 更新
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<bool> Update(UpdateMenuInput input);

    /// <summary>
    /// 删除
    /// </summary>
    /// <param name="id"></param>
    /// <returns></returns>
    Task<bool> Remove(string id);

    /// <summary>
    /// 改变level code 
    /// </summary>
    /// <param name="draggingNodeId">拖拽对象 的id</param>
    /// <param name="dropNodeId">释放对象 的 id</param>
    /// <param name="dropType">拖拽类型 inner  after before</param>
    /// <returns></returns>
    Task<bool> ChangeLevel(string draggingNodeId, string dropNodeId, string dropType);
}